home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / SWAG / SWAGA_C / CHARS.SWG / 0006_Change VGA-EGA-CGA Fonts.pas < prev    next >
Pascal/Delphi Source File  |  1993-11-26  |  3KB  |  93 lines

  1. {
  2. From: MICHAEL HOENIE
  3. Subj: CHARACTER UNIT.
  4. ----------------------------------------------------------------------
  5. here is some revised code to allow users to change the standard ASCII
  6. font in EGA or VGA. I don't know if it will work in standard CGA, but
  7. it works well on VGA. }
  8.  
  9.    unit graphics;
  10.  
  11.    interface uses dos, crt;
  12.  
  13.    const
  14.      numnewchars=9; { # of chars available }
  15.  
  16.      {1 2 4 8 1 3 6 1
  17.       │ │ │ │ 6 2 4 2
  18.       │ │ │ │ │ │ │ 8
  19.       │ │ │ │ │ │ │ │     Character.
  20.       1 2 3 4 5 6 7 8       8x16
  21.      ┌─┬─┬─┬─┬─┬─┬─┬─┐
  22.     1│ │ │ │ │ │ │ │ │=
  23.     2│ │ │ │ │ │ │ │ │=       This is a BYTE mapper.
  24.     3│ │ │ │ │ │ │ │ │=       Fill in the blanks, then add
  25.     4│ │ │ │ │ │ │ │ │=       the numbers together on a calculator.
  26.     5│ │ │ │ │ │ │ │ │=       The # should never be greater than 255.
  27.     6│ │ │ │ │ │ │ │ │=
  28.     7│ │ │ │ │ │ │ │ │=       The #'s are as follows:
  29.     8│ │ │ │ │ │ │ │ │=
  30.     9│ │ │ │ │ │ │ │ │=       1,2,4,8,16,32,64,128
  31.    10│ │ │ │ │ │ │ │ │=
  32.    11│ │ │ │ │ │ │ │ │=       So if you had:
  33.    12│ │ │ │ │ │ │ │ │=
  34.    13│ │ │ │ │ │ │ │ │=       X X X    X  X      X
  35.    14│ │ │ │ │ │ │ │ │=       1 2 4   16 32    128   = 183
  36.    15│ │ │ │ │ │ │ │ │=
  37.    16│ │ │ │ │ │ │ │ │=
  38.      └─┴─┴─┴─┴─┴─┴─┴─┘}
  39.  
  40.      procedure loadchar; { this is the procedure to change the characters }
  41.  
  42.    implementation
  43.  
  44.      procedure loadchar;
  45.      type
  46.        bytearray=array[0..15] of byte;
  47.        chararray=array[1..numnewchars] of record
  48.          charnum:byte;
  49.          chardata:bytearray;
  50.        end;
  51.      const { these are the characters outlined 9 = chr(9), 176 = chr(176) }
  52.        newchars:chararray=(
  53.          (charnum:9; chardata: (24,0,66,0,0,024,165,24,60,102,66,66,66,
  54.                                102,60,0)),
  55.          (charnum:10; chardata: (24,126,255,231,231,255,255,255,255,255,
  56.                                 191,255,255,255,255,255)),
  57.          (charnum:24; chardata: (24,24,24,24,24,24,24,24,24,24,126,24,24,
  58.                                 24,60,24)),
  59.          (charnum:231; chardata: (8,42,28,127,27,42,8,8,8,8,8,8,8,8,8,0)),
  60.          (charnum:235; chardata: (0,0,102,60,24,24,24,60,60,126,126,126,
  61.                                  60,24,0,0)),
  62.          (charnum:239; chardata: (255,171,213,171,213,171,213,171,213,171,
  63.                                  213,171,213,171,213,171)),
  64.          (charnum:225; chardata: (24,60,102,102,102,60,24,24,24,24,120,120,
  65.                                  24,120,120,0)),
  66.          (charnum:176; chardata: (9,64,4,33,0,136,2,32,1,136,0,66,0,8,64,18)),
  67.          (charnum:177; chardata: (119,119,119,0,238,238,238,0,119,119,119,0,
  68.                                  238,238,238,0)));
  69.  
  70.      var
  71.        regs:registers;
  72.        i:byte;
  73.      begin
  74.        for i:=1 to numnewchars do
  75.          begin
  76.            with regs do
  77.              begin
  78.                ah:=$11;  { video sub-Function $11 }
  79.                al:=$0;   { Load Chars to table $1 }
  80.                bh:=$10;  { number of Bytes per Char $10 }
  81.                bl:=0;    { Character table to edit }
  82.                cx:=1;    { number of Chars we're definig }
  83.                dx:=newchars[i].charnum;
  84.                es:=seg(newchars[i].chardata);
  85.                bp:=ofs(newchars[i].chardata);
  86.                intr($10,regs);
  87.              end;
  88.          end;
  89.      end;
  90.  
  91.    begin
  92.    end.
  93.